package ${packgeDO.daoPackageName};

import java.util.List;
import ${domain.packageName}.${domain.className};
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

<#assign len = domain.className?index_of("DO")>
<#assign param="${domain.className?uncap_first}">

/**
 * ${data_object_comment} DAO
 * @author yuwenjie
 * @date ${create_time?if_exists?string("yyyy-MM-dd HH:mm:ss")}
 */
public interface ${domain.className?substring(0,len)}Mapper extends BaseMapper<${domain.className}>{
	
	/**
	 * 动态更新非空属性
	 * @description selectCountDynamic
	 * @param ${param}
	 * @return 更新行数
	 */
	int updateDynamic(${domain.className} ${param});

	/**
	 * 动态返回记录数
	 * @description selectCountDynamic
	 * @param ${param}
	 * @return 记录数
	 */
	Long selectCountDynamic(${domain.className} ${param});

	/**
	 * 动态返回列表
	 * @description selectDynamic
	 * @param ${param}
	 * @return 列表
	 */
	List<${domain.className}> selectDynamic(${domain.className} ${param});
	
	/**
	 * 动态返回列表（用于分页）
	 * @description selectDynamicPageQuery
	 * @param ${param}
	 * @return 列表
	 */
	List<${domain.className}> selectDynamicPageQuery(${domain.className} ${param});
	
	/**
	 * 批量插入
	 * @description saveForBatch
	 * @param ${param}
	 */
	void saveForBatch(List<${domain.className}> list);
	
	/**
	 * 批量更新
	 * @description updateForBatch
	 * @param ${param}
	 */
	void updateForBatch(List<${domain.className}> list);
	
	/**
	 * 动态查询单条记录
	 * @description selectOne
	 * @param ${param}
	 * @return 单条记录
	 */
	${domain.className} selectOne(${domain.className} ${param});
}
